package com.ch.clinking.Utils;

import android.annotation.SuppressLint;
import android.icu.util.Calendar;
import android.os.Build;
import android.util.Log;

import androidx.annotation.RequiresApi;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.TimeZone;

public class TimeUtil {
    //获取当前时间
    public static String getCurrentTimeFormat() {
        @SuppressLint("SimpleDateFormat") SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date date = new Date();
        return simpleDateFormat.format(date);
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    public static String getFormatTime() {
        // 获取当前时间的 Calendar 实例
        Calendar calendar = Calendar.getInstance();

        // 获取当前日期和时间
        Date currentDate = calendar.getTime();

        TimeZone defaultTimeZone = TimeZone.getDefault();

        Log.d("TimeZone", defaultTimeZone.getID() + currentDate);

        // 定义日期格式
        @SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 使用默认时区格式化日期
        dateFormat.setTimeZone(defaultTimeZone);

        // 使用 format 方法将 Date 转换为字符串
        String formattedDate = dateFormat.format(currentDate);

        Log.d("TimeZone", "formattedDate" + formattedDate);

        return formattedDate;
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    public static String getStringFormatTime() {
        // 获取当前时间的 Calendar 实例
        Calendar calendar = Calendar.getInstance();

        // 获取当前日期和时间
        Date currentDate = calendar.getTime();

        TimeZone defaultTimeZone = TimeZone.getDefault();

        Log.d("TimeZone", defaultTimeZone.getID());

        // 定义日期格式
        @SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");

        // 使用默认时区格式化日期
        dateFormat.setTimeZone(defaultTimeZone);

        // 使用 format 方法将 Date 转换为字符串
        String formattedDate = dateFormat.format(currentDate);
        return formattedDate;
    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    public static long getDayNum(String createdTime) {
        // 定义日期时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 解析订单创建日期和时间
        LocalDateTime orderDateTime = LocalDateTime.parse(createdTime, formatter);

        // 获取当前时间的 Calendar 实例
        Calendar calendar = Calendar.getInstance();

        // 获取当前日期和时间
        Date currentDate = calendar.getTime();

        TimeZone defaultTimeZone = TimeZone.getDefault();

        // 定义日期格式
        @SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        dateFormat.setTimeZone(defaultTimeZone);

        // 将当前日期转换为字符串
        String formattedCurrentDate = dateFormat.format(currentDate);

        // 将字符串转换为 LocalDateTime
        LocalDateTime currentDateTime = LocalDateTime.parse(formattedCurrentDate, formatter);


        long between = ChronoUnit.DAYS.between(orderDateTime.toLocalDate(), currentDateTime.toLocalDate());

        Log.d("between", String.valueOf(between));

        // 输出结果
        return between;
    }

}
